<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 赋值  
        
        // let arr1 = [1,2,3,4,5];
        // let arr2 = arr1;
        // 将arr1的地址复制一份  给到  arr2
        // arr1 arr2 指向同一个地址  

        // 浅拷贝 只拷贝第一层  (第一层各自独立)
        // 多维数组  多维对象  
        // Object.assign(新对象,原对象);
        // 返回值 原对象的成员拷贝到新对象内 
        // 特点: arr1 arr2 第一层各自独立  第二层 arr1 arr2指向同一个地址 
        // 

        // var arr1 = [1,2,3,4,5,[6,7,8]];
        // var arr2 = Object.assign([],arr1);
        // console.log(arr1,arr2);
        // var obj1 = {name:'zhangsan',age:18,info:{addr:'济南',height:'181cm'}};
        // var obj2 = Object.assign({},obj1)
        // console.log(obj1,obj2);


        // 冒充继承  = 寄生继承+浅拷贝  

        // 深拷贝 
        
        // 让每一层都各自独立 


        //  JSON 
        //  JSON.stringify()   js=> json
        //  JSON.parse()       json=>js

        const obj = {name:'zhangsan',age:18,info:{addr:'济南',height:'181cm'}}
        // 先将 obj-> JSON.stringify() -> JSON.parse() 
        // 完成了深拷贝   

        // 为了 转成json  肯定 是复制一份一模一样的(每一层各自独立) 然后再转成json 
        // 我们要的是拷贝好的对象 所以需要 再由json转成js 
        const ob2 = JSON.parse(JSON.stringify(obj));

        console.log(obj,ob2);


        

    </script>
</body>
</html>